`ifndef HEADER_SVH
`define HEADER_SVH

//idx_t.5bit
  //to remember the position of the current pixel being processed 
  typedef struct packed {
    logic [4:0] m1_idx;//(32/4=8)the most idx number support is 15
    logic [4:0] n1_idx;
    logic [4:0] k1_idx;
  } idx_t;    

//pack_data.32bit.
  // for 8 datas input to PE
  typedef struct packed {
    //32 bit.it should be sure that once 8 datas into,just chage the PE input
    //If we want to maximize the utilization of resources
      //then we need to minimize the units.
    union packed {
      logic [7:0][3:0]  bit4;//INT4
      logic [3:0][7:0]  bit8;//INT8
      logic [1:0][15:0] bit16;//FP16   
      logic [31:0]      bit32;//FP32
      logic [31:0]      result;
    } data;
  } pack_data;

`define INT4_MODE       0
`define INT8_MODE       1
`define FP16_MODE       2
`define FP32_MODE       3
//The previous scale 8/8/16 was too large and consumed too many resources(Carry8)
// so we have now reduced it until 4/4/8.
`define M0 2
`define N0 2
`define K0 8
`endif 

